home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 1
/
SPACE - Library 1 - Volume 1.iso
/
program
/
355
/
source
/
modre-ex
/
m2demo2.mod
< prev
next >
Wrap
Text File
|
1990-02-02
|
6KB
|
204 lines
MODULE M2demo;
IMPORT SYSTEM;
IMPORT AESResources;
FROM SYSTEM IMPORT ADR,ADDRESS;
FROM GEMAESbase IMPORT Object,TEdInfo,FormStart,FormFinish,RTree,Arrow;
FROM AESApplications IMPORT ApplInitialise,ApplExit;
FROM AESForms IMPORT FormDialogue,FormDo,FormCenter;
FROM AESObjects IMPORT ObjectDraw;
FROM AESGraphics IMPORT GrafMouse;
FROM Strings IMPORT Assign;
CONST
DEMO = 0 ;
DATA = 3 ;
INOK = 4 ;
OUTDATA = 1 ;
RESULT = 1 ;
OUTOK = 2 ;
MODULE resource;
(*
Produced by ResourceMaker 0.10a
Copyright (c) 1985, 1986 Modula 2 Software Ltd.
Copyright (c) 1985, 1986 TDI Software Inc.
Resource file version: 00000H
*)
FROM SYSTEM IMPORT CODE, ADDRESS;
FROM AESResources IMPORT ResourceObjectFix;
EXPORT TreeAddr;
CONST
(* object types that don't have to be relocated *)
GBOX = 20;
GPROGDEF = 24;
GIBOX = 25;
GBOXCHAR = 27;
CONST
(* resource file object counts and indicies *)
nrObjects = 8; ixObjects = 226;
nrTrees = 2; ixTrees = 418;
nrTedInfos = 2; ixTedInfos = 170;
(* resource file data inserted into CODE stream *)
(*$S-,$P-,$T-*)
PROCEDURE RESOURCEDATA0;
BEGIN
CODE(00000H,000E2H,000AAH,000AAH,000AAH,000AAH,00024H,000AAH);
CODE(000AAH,001A2H,00008H,00002H,00002H,00000H,00000H,00000H);
CODE(00000H,001AAH,05468H,06973H,02069H,07320H,06120H,07361H);
CODE(06D70H,06C65H,02064H,0656DH,06F20H,06F66H,02064H,06961H);
CODE(06C6FH,06700H,07265H,06164H,0696EH,06700H,05F5FH,05F5FH);
CODE(05F5FH,05F5FH,05F5FH,0004EH,0616DH,0653AH,05F5FH,05F5FH);
CODE(05F5FH,05F5FH,05F5FH,00058H,05858H,05858H,05858H,05858H);
CODE(05800H,0676FH,0206FH,06E21H,0005FH,05F5FH,05F5FH,05F5FH);
CODE(05F5FH,05F00H,0596FH,07520H,07479H,07065H,0643AH,05F5FH);
CODE(05F5FH,05F5FH,05F5FH,05F5FH,00058H,05858H,05858H,05858H);
CODE(05858H,05800H,0446FH,06E65H,02100H,00000H,0004CH,00000H);
CODE(00057H,00000H,00067H,00003H,00006H,00000H,01180H,00000H);
CODE(000FFH,0000BH,00010H,00000H,00079H,00000H,00084H,00000H);
CODE(00099H,00003H,00006H,00000H,01180H,00000H,000FFH,0000BH);
CODE(00015H,0FFFFH,00001H,00004H,00014H,00000H,00010H,00002H);
CODE(01100H,00000H,00000H,00026H,0000BH,00002H,0FFFFH,0FFFFH);
CODE(0001CH,00000H,00000H,00000H,00024H,00004H,00002H,0001FH);
CODE(00001H,00003H,0FFFFH,0FFFFH,0001CH,00000H,00000H,00000H);
CODE(00044H,0000FH,00004H,00009H,00001H,00004H,0FFFFH,0FFFFH);
CODE(0001DH,00008H,00000H,00000H,000AAH,0000BH,00006H,0000FH);
CODE(00001H,00000H,0FFFFH,0FFFFH,0001AH,00025H,00000H,00000H);
CODE(00072H,0000EH,00008H,00008H,00001H,0FFFFH,00001H,00002H);
CODE(00014H,00000H,00010H,00002H,01100H,00000H,00000H,0001CH);
CODE(00009H,00002H,0FFFFH,0FFFFH,0001DH,00008H,00000H,00000H);
CODE(000C6H,00003H,00002H,00014H,00001H,00000H,0FFFFH,0FFFFH);
CODE(0001AH,00025H,00000H,00000H,000A4H,00008H,00005H,00008H);
CODE(00001H,00000H,000E2H,00000H,0015AH);
END RESOURCEDATA0;
TYPE
OBJECT = RECORD
next, head: INTEGER;
tail, type: INTEGER;
flags, state: INTEGER;
spec: ADDRESS;
x, y: INTEGER;
width, height: INTEGER;
END;
TEDINFO = RECORD
ptext,
ptmplt,
pvalid: ADDRESS;
font, resvd1: INTEGER;
just, color: INTEGER;
resvd2, thickness: INTEGER;
txtlen, tmplen: INTEGER;
END;
VAR
i: CARDINAL; o: INTEGER; x: ADDRESS;
TreeAddr: POINTER TO ARRAY [0..nrTrees-1] OF ADDRESS;
TedInfoAddr: POINTER TO ARRAY [0..nrTedInfos-1] OF TEDINFO;
ObjectAddr: POINTER TO ARRAY [0..nrObjects-1] OF OBJECT;
BEGIN
(* relocate tree indicies *)
x := ADDRESS(RESOURCEDATA0) + ixTrees;
TreeAddr := x;
FOR i := 0 TO nrTrees-1 DO
TreeAddr^[i] := TreeAddr^[i] + ADDRESS(RESOURCEDATA0); INC(x,4);
END;
(* relocate ted infos *)
x := ADDRESS(RESOURCEDATA0) + ixTedInfos;
TedInfoAddr := x;
FOR i := 0 TO nrTedInfos-1 DO
WITH TedInfoAddr^[i] DO
ptext := ptext + ADDRESS(RESOURCEDATA0);
ptmplt := ptmplt + ADDRESS(RESOURCEDATA0);
pvalid := pvalid + ADDRESS(RESOURCEDATA0);
END;
END;
(* relocate object specs *)
x := ADDRESS(RESOURCEDATA0) + ixObjects;
ObjectAddr := x;
FOR i := 0 TO nrObjects-1 DO
WITH ObjectAddr^[i] DO
IF (type # GBOX) & (type # GPROGDEF) &
(type # GIBOX) & (type # GBOXCHAR) THEN
(* relocate against resource base *)
spec := spec + ADDRESS(RESOURCEDATA0);
END;
(* Fix up the scaling *)
ResourceObjectFix(ObjectAddr,i) ; (*0.10a*)
END;
END;
END resource;
TYPE
OP=POINTER TO ARRAY [0..100] OF Object;
TP=POINTER TO TEdInfo;
CP=POINTER TO ARRAY [0..100] OF CHAR;
VAR
JUNK:INTEGER;
str:ARRAY [0..100] OF CHAR;
sp:CP;
data,outtree:OP;
x,y,w,h:INTEGER;
PROCEDURE ResourceLoad(a:ARRAY OF CHAR);
BEGIN
END ResourceLoad;
PROCEDURE ResourceGetAddr(a,b:INTEGER;VAR c:ADDRESS);
BEGIN
c:=TreeAddr^[b];
END ResourceGetAddr;
PROCEDURE gettext(TREE:OP;index:INTEGER;VAR ans:CP);
VAR
ted:TP;
ob:Object;
CH:CP;
BEGIN
ob:=TREE^[index];
ted:=ob.spec;
CH:=ted^.ptext;
Assign(ans^,CH^);
END gettext;
PROCEDURE puttext(tree:OP;index:INTEGER;str:CP);
VAR
ted:TP;
CH:CP;
BEGIN
ted:=tree^[index].spec;
CH:=ted^.ptext;
Assign(CH^,str^)
END puttext;
BEGIN
JUNK:=ApplInitialise();
ResourceLoad("B:\M2DEMO.RSC");
ResourceGetAddr(RTree,DEMO,data);
GrafMouse(Arrow,0);
ResourceGetAddr(RTree,OUTDATA,outtree);
FormCenter(data,x,y,w,h);
FormDialogue(FormStart,0,0,0,0,x,y,w,h);
ObjectDraw(data,0,4,x,y,w,h);
JUNK:=FormDo(data,DATA);
sp:=ADR(str);
gettext(data,DATA,sp);
FormDialogue(FormFinish,0,0,0,0,x,y,w,h);
FormCenter(outtree,x,y,w,h);
FormDialogue(FormStart,0,0,0,0,x,y,w,h);
puttext(outtree,OUTDATA,sp);
ObjectDraw(outtree,0,4,x,y,w,h);
JUNK:=FormDo(outtree,0);
FormDialogue(FormFinish,0,0,0,0,x,y,w,h);
ApplExit;
END M2demo.